home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / sjcsfo.zip / SJCSFO.TXT < prev    next >
Text File  |  1992-11-19  |  51KB  |  1,734 lines

  1.  
  2. ;Flight Simulator Adventure File
  3. ;
  4. ;Date Created: 11-19-1992
  5. ;
  6. ;A Flight from SJC-San Jose International to SFO-San Francisco International.
  7. ;Generated using the Pilot's ToolBox conversion feature that makes
  8. ;Adventure script files from FLIGHT PLANNER Flight Plans.
  9. ;
  10. ;The Pilot's ToolBox is a authored by Robert M. MacKay of RMM Consulting.
  11. ;For information on this product, contact Robert on Compuserve, in the
  12. ;FSFORUM, at ID 71641,2321.
  13. ;
  14. ;Required: FS4, AAF
  15. ;
  16. ;Recommended: A&SD, SGA, Flight Planner, Pilot's ToolBox
  17. ;             Leave MAGROT.DRV driver out as it may mess up ILS approaches.
  18. ;             Leave FRAME.DRV  driver out as the Transponder is required.
  19. ;
  20. ;Notes: Clearance Del. Frequency is a default 118.0.
  21. ;       Orig Ground    Frequency is a default 121.7.
  22. ;       Orig Tower     Frequency is a default 124.0.
  23. ;       Orig Departure Frequency is a default 121.3.
  24. ;       Center         Frequency is a default 134.15.
  25. ;       Dest Approach  Frequency is a default 134.5.
  26. ;       Dest Tower     Frequency is a default 120.5.
  27. ;       Dest Ground    Frequency is a default 121.8
  28. ;       Flight Service Frequency is a default 122.20.
  29. ;
  30. ;       Variables A-E are used to count seconds passed during timing loops.
  31. ;       Variable  F stores a 1/0 to show if downwind leg should be skipped.
  32. ;       Variable  G stores a 1/0 to show if base leg should be skipped.
  33. ;       Variable  H is used to calculate heading error.
  34. ;       Variable  I stores a 1/0 to show if a procedure turn is needed.
  35. ;       Variable  J is used to store the cloud cover density.
  36. ;       Variable  K is used as a counter for random weather change intervals.
  37. ;       Variable  L stores the current facility: 0-Grd 1-Twr 2-Dep 3-Ctr 4-App
  38. ;       Variable  M stores the current cleared heading (used by FPAutoPilot).
  39. ;       Variable  N stores the current cleared altitude (used by FPAutoPilot).
  40. ;       Variable  O is the message # counter fo the randome ATC chatter.
  41. ;       Variable  P stores a 1/0 to show if the Flight Plan Auto Pilot is on.
  42. ;       Variable  R is used to indicate climb, level, or descent (0/1/2).
  43. ;       Variable  S is used to track if user has deviated from IFR to VFR.
  44. ;       Variables V and T store a 1/0 to indicate whether to use VOC/TXT.
  45. ;       Variables W-Z are temporary variables for use in math, etc.
  46. ;
  47. ;       This adventure works best with aircraft that cruise at 120kts.
  48. ;
  49. ;       Winds from a Flight Planner flight plan are set at 3500' MSL.
  50. ;
  51. ;       The FltPln AutoPilot (FPAP) will only climb/descend at 500 FPM.
  52. ;       If you are going to use FPAP, be sure your flight plan was created
  53. ;       with a plane having climb/descent rates of 500 FPM.
  54. ;
  55. ;Start adventure at origination.  NOTE:  This is a central point for the
  56. ;origination airport.  It may put you in a building, water, etc.  If you
  57. ;are crashed every time you start this adventure, then try changing the
  58. ;decimal values a little to move away from the object you are hitting.
  59. ;The best thing to do is get into FS4 and place yourself manually at the
  60. ;location you would like to start at and make a note of the exact N/E
  61. ;position.  Then edit this file and place those coordinates in the
  62. ;following SETPOSITION statement.
  63. ;
  64. ;SETPOSITION(17185.0000,05164.0000,0)
  65. ;
  66. ;Set which random chatter message # to start with.
  67. SETVAR(X,22)
  68. Y:=random/X
  69. O:=remainder
  70. ;Set misc items.
  71. SETVAR(F,0)
  72. SETVAR(G,0)
  73. SETVAR(I,0)
  74. SETVAR(L,0)
  75. EQU norrot 754
  76. EQU magvar 756
  77. ;
  78. SETUP:
  79. PRINT "Default scenery; BAYAREA.SC1 recommended - hit 'x'"
  80. if key("x")
  81.     GOTO OPTIONS
  82. endif
  83. GOTO SETUP
  84. ;Setup options for Voice/Text/Both.
  85. OPTIONS:
  86.     PRINT"Adventure Setup...Please answer the following questions:"
  87.     WAIT(4)
  88.     PRINT"Press (W) for VOICE only, (E) for TEXT only, or (R) Both."
  89. CHKVT:
  90.     IF KEY("W") THEN
  91.         SETVAR(V,1)
  92.         SETVAR(T,0)
  93.         GOTO INTRO
  94.     ENDIF
  95.     IF KEY("E") THEN
  96.         SETVAR(V,0)
  97.         SETVAR(T,1)
  98.         GOTO INTRO
  99.     ENDIF
  100.     IF KEY("R") THEN
  101.         SETVAR(V,1)
  102.         SETVAR(T,1)
  103.         GOTO INTRO
  104.     ENDIF
  105.     GOTO CHKVT
  106. ;
  107. INTRO:
  108. ;   Set Winds on Surface and Aloft.
  109.     SETVAR(Y,-256)
  110.     SETVAR(Z,4)
  111.     w0vel:=w0vel&Y|Z
  112.     SETVAR(w0turb,0)
  113.     SETVAR(w0depth,45)
  114.     SETVAR(w0dir,21845)
  115.     SETVAR(Z,0)
  116.     w3vel:=w3vel&Y|Z
  117.     SETVAR(w3dir,0)
  118.     SETVAR(w3turb,0)
  119.     SETVAR(w3top,15000)
  120.     SETVAR(w3bot,915)
  121.     PLAY"HASH.VOC"
  122.     IF VARTEST(V,1,1) THEN
  123.         PLAY"SJCSFO.V00"
  124.     ENDIF
  125.     IF VARTEST(T,1,1) THEN
  126.         PRINT"Welcome to the flight from SJC to SFO."
  127.         WAIT(4)
  128.         PRINT"A Flight Planner converted Adventure made by the Pilot's ToolBox."
  129.         WAIT(4)
  130.         PRINT"Tune in San Jose International Clearance Delivery on 118.0 when ready to begin,"
  131.         WAIT(4)
  132.         PRINT"or press X to see some instructions."
  133.         WAIT(4)
  134.         PRINT""
  135.     ENDIF
  136. ;
  137. ;On the ground at SJC receiving clearance.
  138. LOOPC:
  139.     IF COM(118.0) THEN
  140. LOOPCA:
  141.         PLAY"HASH.VOC"
  142.         IF VARTEST(V,1,1) THEN
  143.             PLAY"SJCSFO.V01"
  144.         ENDIF
  145.         IF VARTEST(T,1,1) THEN
  146.             PRINT"Cessna 18390 San Jose International Clearance."
  147.             WAIT(4)
  148.             PRINT"Cleared to San Francisco International, direct SFO VOR, routing as filed."
  149.             WAIT(4)
  150.             PRINT"Climb and maintain 2000.  Expect 3000 within 10 minutes after departure."
  151.             WAIT(4)
  152.             PRINT"Check latest weather report with Flight Service on 122.20."
  153.             WAIT(4)
  154.             PRINT"Departure on 121.3, ATIS on 125.20, Squawk 6404."
  155.             WAIT(8)
  156.             PRINT"Contact Ground on 121.7."
  157.             WAIT(4)
  158.             PRINT""
  159.         ENDIF
  160.         GOSUB CLEARVARS
  161.         GOTO LOOP1
  162.     ENDIF
  163.     IF KEY("R") THEN
  164.         GOTO INTRO
  165.     ENDIF
  166.     IF KEY("X") THEN
  167.         PRINT"Pressing R will repeat the last message."
  168.         WAIT(4)
  169.         PRINT"Pressing W activates FPAP, pressing E de-activates the FPAP."
  170.         WAIT(4)
  171.         PRINT"Pressing J when tuned to FSS gives flt plan summary & weather."
  172.         WAIT(4)
  173.         PRINT"Pressing X when tuned to FSS will toggle request to go VFR/IFR."
  174.         WAIT(4)
  175.         PRINT"Pressing 7 after Departure Clearance will unfold IAP of SFO"
  176.         WAIT(4)
  177.         PRINT"Tune in San Jose International Clearance Delivery on 118.0 when ready to begin."
  178.         WAIT(4)
  179.         PRINT""
  180.     ENDIF
  181.     GOTO LOOPC
  182. ;
  183. ;On the ground at SJC awaiting taxi instructions.
  184. LOOP1:
  185.     GOSUB COUNTER
  186.     GOSUB FSS
  187.     IF KEY("R") THEN
  188.         GOTO LOOPCA
  189.     ENDIF
  190.     IF COM(121.7) THEN
  191. LOOP1A:
  192.         PLAY"HASH.VOC"
  193.         IF VARTEST(V,1,1) THEN
  194.             PLAY"SJCSFO.V02"
  195.         ENDIF
  196.         IF VARTEST(T,1,1) THEN
  197.             PRINT"Cessna 18390 San Jose International Ground."
  198.             WAIT(4)
  199.             PRINT"Taxi to runway 30R and hold short."
  200.             WAIT(4)
  201.             PRINT"When holding, Contact Tower on 124.0."
  202.             WAIT(4)
  203.             PRINT""
  204.         ENDIF
  205.         SETVAR(A,0)
  206. LOOP1B:
  207.         IF VARTEST(A,10,9999) THEN
  208.             GOTO LOOP2
  209.         ENDIF
  210.         GOSUB FSS
  211.         WAIT(1)
  212.         ADDVAR(A,1)
  213.         GOTO LOOP1B
  214.     ENDIF
  215.     IF VARTEST(A,10,9999) THEN
  216.         PLAY"HASH.VOC"
  217.         IF VARTEST(V,1,1) THEN
  218.             PLAY"SJCSFO.V03"
  219.         ENDIF
  220.         IF VARTEST(T,1,1) THEN
  221.             PRINT"Contact San Jose International Ground on 121.7."
  222.             WAIT(4)
  223.             PRINT""
  224.         ENDIF
  225.         SETVAR(A,0)
  226.     ENDIF
  227.     GOTO LOOP1
  228. ;
  229. ;Taxi until holding short & squawking 6404
  230. LOOP2:
  231.     IF KEY("R") THEN
  232.         GOTO LOOP1A
  233.     ENDIF
  234.     GOSUB FSS
  235.     IF GROUNDSPEED(0,0) THEN
  236.         IF COM(124.0) THEN
  237.             SETVAR(L,1)
  238.             IF XPNDR(6404) THEN
  239. LOOP2A:
  240.                 PLAY"HASH.VOC"
  241.                 IF VARTEST(V,1,1) THEN
  242.                     PLAY"SJCSFO.V04"
  243.                 ENDIF
  244.                 IF VARTEST(T,1,1) THEN
  245.                     PRINT"Cessna 18390 San Jose International Tower."
  246.                     WAIT(4)
  247.                     PRINT"You're cleared for departure runway 30R."
  248.                     WAIT(4)
  249.                     PRINT"Maintain runway heading on departure."
  250.                     WAIT(4)
  251.                     PRINT"Expect climbing turn to 2000."
  252.                     WAIT(4)
  253.                     PRINT""
  254.                 ENDIF
  255.                 GOTO LOOP2B
  256.             ENDIF
  257.             IF VARTEST(V,1,1) THEN
  258.                 PLAY"SJCSFO.V05"
  259.             ENDIF
  260.             IF VARTEST(T,1,1) THEN
  261.                 PRINT"Please squawk 6404 for radar contact."
  262.                 WAIT(4)
  263.             ENDIF
  264.             WAIT(8)
  265.             GOTO LOOP2
  266.         ENDIF
  267.         IF VARTEST(V,1,1) THEN
  268.             PLAY"SJCSFO.V06"
  269.         ENDIF
  270.         IF VARTEST(T,1,1) THEN
  271.             PRINT"Contact San Jose International Tower on 124.0."
  272.             WAIT(4)
  273.             PRINT""
  274.         ENDIF
  275.         WAIT(5)
  276.         GOTO LOOP2
  277.     ENDIF
  278.     IF ALTAGL(100,9999) THEN
  279.         PLAY"HASH.VOC"
  280.         IF VARTEST(V,1,1) THEN
  281.             PLAY"SJCSFO.V07"
  282.         ENDIF
  283.         IF VARTEST(T,1,1) THEN
  284.             PRINT"Cessna 18390 San Jose International Tower."
  285.             WAIT(4)
  286.             PRINT"You have departed before receiving clearance!"
  287.             WAIT(4)
  288.             PRINT"Your license is hereby revoked."
  289.             WAIT(4)
  290.             PRINT"Squawk 7777, tune 121.5, and activate your ELT."
  291.             WAIT(5)
  292.             PRINT"Your aircraft is being set to descend and maintain zero."
  293.             WAIT(4)
  294.             PRINT""
  295.         ENDIF
  296. LOOP2C:
  297.         SETVAR(X,15)
  298.         SETVAR(Y,-256)
  299.         emrgcy:=emrgcy&Y|X
  300.         SETVAR(smoke_enable,1)
  301.         SETVAR(smoke_now,1)
  302.         WAIT(45)
  303. DAMO:
  304.         
  305.         SETVAR(magno,5)
  306.         GOTO DAMO
  307.     ENDIF
  308.     GOTO LOOP2
  309. ;
  310. ;Check for Takeoff in Wrong Direction
  311. LOOP2B:
  312.     IF KEY("R") THEN
  313.         GOTO LOOP2A
  314.     ENDIF
  315.     IF ALTAGL(100,9999) THEN
  316.         IF HEADING(285,300) THEN
  317.             GOTO LOOP3
  318.         ENDIF
  319.         IF HEADING(300,315) THEN
  320.             GOTO LOOP3
  321.         ENDIF
  322.         PLAY"HASH.VOC"
  323.         IF VARTEST(V,1,1) THEN
  324.             PLAY"SJCSFO.V08"
  325.         ENDIF
  326.         IF VARTEST(T,1,1) THEN
  327.             PRINT"Cessna 18390 San Jose International Tower."
  328.             WAIT(4)
  329.             PRINT"You have departed on the wrong runway!"
  330.             WAIT(4)
  331.             PRINT"Your license is hereby revoked."
  332.             WAIT(4)
  333.             PRINT"Squawk 7777, tune 121.5, and activate your ELT."
  334.             WAIT(5)
  335.             PRINT"Your aircraft is being set to descend and maintain zero."
  336.             WAIT(4)
  337.             PRINT""
  338.         ENDIF
  339.         GOTO LOOP2C
  340.     ENDIF
  341.     GOTO LOOP2B
  342. ;
  343. ;Takeoff
  344. LOOP3:
  345.     IF KEY("R") THEN
  346.         GOTO LOOP2A
  347.     ENDIF
  348.     GOSUB FSS
  349.     IF ALTAGL(500,9999) THEN
  350. LOOP3A:
  351.         IF RADIAL(17340,5060,0,0) THEN
  352.         ENDIF
  353.         W:=RESULT
  354.         GOSUB CORRECTHDGCHK
  355.         PLAY"HASH.VOC"
  356.         IF VARTEST(V,1,1) THEN
  357.             PLAY"SJCSFO.V09"
  358.         ENDIF
  359.         IF VARTEST(T,1,1) THEN
  360.             PRINT"Cessna 18390 San Jose International Tower."
  361.             WAIT(4)
  362.             PRINTVAR(W,"Climbing turn to 2000, heading ")
  363.             WAIT(4)
  364.             PRINT"Contact Departure on 121.3.  Good day."
  365.             WAIT(4)
  366.             PRINT""
  367.         ENDIF
  368.         M:=W
  369.         SETVAR(N,2000)
  370.         GOTO LOOP4
  371.     ENDIF
  372.     GOTO LOOP3
  373. ;
  374. ;Contact Departure
  375. LOOP4:
  376.     IF KEY("R") THEN
  377.         GOTO LOOP3A
  378.     ENDIF
  379.     GOSUB FPAPCHK
  380.     GOSUB TRAFFICCHK
  381.     GOSUB RADARCHK
  382.     GOSUB FSS
  383.     GOSUB COUNTER
  384.     IF COM(121.3) THEN
  385.         SETVAR(L,2)
  386.         W:=M
  387.         GOSUB CHKHDGDIRECT
  388.         IF VARTEST(H,-6,6) THEN
  389.             IF ALTITUDE(1800,31999) THEN
  390. LOOP4A:
  391.                 PLAY"HASH.VOC"
  392.                 IF VARTEST(V,1,1) THEN
  393.                     PLAY"SJCSFO.V10"
  394.                 ENDIF
  395.                 IF VARTEST(T,1,1) THEN
  396.                     PRINT"Cessna 18390 Departure."
  397.                     WAIT(4)
  398.                     PRINT"Radar contact.  Climb and maintain 3000."
  399.                     WAIT(4)
  400.                 ENDIF
  401.                 IF GEARDOWN() THEN
  402.                     IF VARMASK(retractable,255) THEN
  403.                         IF VARTEST(V,1,1) THEN
  404.                             PLAY"SJCSFO.V11"
  405.                         ENDIF
  406.                         IF VARTEST(T,1,1) THEN
  407.                             PRINT"San Jose International Tower reports gear still down."
  408.                             WAIT(4)
  409.                         ENDIF
  410.                     ENDIF
  411.                 ENDIF
  412.                 IF VARTEST(V,1,1) THEN
  413.                     PLAY"SJCSFO.V12"
  414.                 ENDIF
  415.                 IF VARTEST(T,1,1) THEN
  416.                     PRINT"Contact Center on 134.15.  See ya."
  417.                     WAIT(4)
  418.                 ENDIF
  419.                 SETVAR(N,3000)
  420.                 GOSUB CLEARVARS
  421.                 GOTO LOOP5
  422.             ENDIF
  423.             IF CYLINDER(17185,5164,0,9) THEN
  424.                 IF VARTEST(C,15,31999) THEN
  425.                     PLAY"HASH.VOC"
  426.                     IF VARTEST(V,1,1) THEN
  427.                         PLAY"SJCSFO.V13"
  428.                     ENDIF
  429.                     IF VARTEST(T,1,1) THEN
  430.                         PRINT"Cessna 18390 Departure."
  431.                         WAIT(4)
  432.                         PRINT"Please expedite climb to cleared altitude of 2000 now!"
  433.                         WAIT(4)
  434.                     ENDIF
  435.                     SETVAR(C,0)
  436.                 ENDIF
  437.             ENDIF
  438.             GOTO LOOP4
  439.         ENDIF
  440.         IF VARTEST(B,10,31999) THEN
  441.             IF RADIAL(17340,5060,0,0) THEN
  442.             ENDIF
  443.             W:=RESULT
  444.             GOSUB CORRECTHDGCHK
  445.             PLAY"HASH.VOC"
  446.             IF VARTEST(V,1,1) THEN
  447.                 PLAY"SJCSFO.V14"
  448.             ENDIF
  449.             IF VARTEST(T,1,1) THEN
  450.                 PRINT"Cessna 18390 Departure."
  451.                 WAIT(4)
  452.                 PRINTVAR(W,"Establish a heading of ")
  453.                 WAIT(4)
  454.             ENDIF
  455.             M:=W
  456.             SETVAR(B,0)
  457.         ENDIF
  458.         GOTO LOOP4
  459.     ENDIF
  460.     IF VARTEST(A,10,31999) THEN
  461.         PLAY"HASH.VOC"
  462.         IF VARTEST(V,1,1) THEN
  463.             PLAY"SJCSFO.V15"
  464.         ENDIF
  465.         IF VARTEST(T,1,1) THEN
  466.             PRINT"Cessna 18390 Tower."
  467.             WAIT(4)
  468.                 PRINT"Contact Departure on 121.3."
  469.             WAIT(4)
  470.         ENDIF
  471.         SETVAR(A,0)
  472.     ENDIF
  473.     GOTO LOOP4
  474. ;
  475. ;Direct to San Francisco International VOR
  476. LOOP5:
  477.     IF KEY("R") THEN
  478.         GOTO LOOP4A
  479.     ENDIF
  480.     GOSUB FPAPCHK
  481.     GOSUB TRAFFICCHK
  482.     GOSUB RADARCHK
  483.     GOSUB FSS
  484.     GOSUB COUNTER
  485.     IF COM(134.15)
  486.         SETVAR(L,3)
  487.         IF RADIAL(17340,5060,0,0) THEN
  488.         ENDIF
  489.         W:=RESULT
  490.         GOSUB CORRECTHDGCHK
  491.         IF VARTEST(H,-6,6) THEN
  492. LOOP5A:
  493.             PLAY"HASH.VOC"
  494.             IF VARTEST(V,1,1) THEN
  495.                 PLAY"SJCSFO.V16"
  496.             ENDIF
  497.             IF VARTEST(T,1,1) THEN
  498.                 PRINT"Cessna 18390 Center."
  499.                 WAIT(4)
  500.                 PRINT"Cleared direct to San Francisco International VOR at 3000."
  501.                 WAIT(4)
  502.             ENDIF
  503.             GOSUB CLEARVARS
  504.             GOTO LOOP6
  505.         ENDIF
  506.         IF VARTEST(C,10,31999) THEN
  507.             PLAY"HASH.VOC"
  508.             IF VARTEST(V,1,1) THEN
  509.                 PLAY"SJCSFO.V17"
  510.             ENDIF
  511.             IF VARTEST(T,1,1) THEN
  512.                 PRINT"Cessna 18390 Center."
  513.                 WAIT(4)
  514.                 PRINTVAR(W,"Establish a heading to San Francisco International VOR of ")
  515.                 WAIT(4)
  516.                 PRINT"Frequency for San Francisco International VOR is 115.80."
  517.                 WAIT(4)
  518.             ENDIF
  519.             M:=W
  520.             SETVAR(C,0)
  521.         ENDIF
  522.         GOTO LOOP5
  523.     ENDIF
  524.     IF VARTEST(A,5,31999) THEN
  525.         PLAY"HASH.VOC"
  526.         IF VARTEST(V,1,1) THEN
  527.             PLAY"SJCSFO.V18"
  528.         ENDIF
  529.         IF VARTEST(T,1,1) THEN
  530.             PRINT"Cessna 18390 Departure."
  531.             WAIT(4)
  532.             PRINT"Contact Center on 134.15."
  533.             WAIT(4)
  534.         ENDIF
  535.         SETVAR(A,0)
  536.     ENDIF
  537.     GOTO LOOP5
  538. ;
  539. ;Waiting to get to San Francisco International VOR
  540. LOOP6:
  541.     IF KEY("R") THEN
  542.         GOTO LOOP5A
  543.     ENDIF
  544.     GOSUB FPAPCHK
  545.     GOSUB TRAFFICCHK
  546.     GOSUB RADARCHK
  547.     GOSUB FSS
  548.     GOSUB COUNTER
  549.     IF RADIAL(17340,5060,0,0) THEN
  550.     ENDIF
  551.     W:=RESULT
  552.     GOSUB CORRECTHDGCHK
  553.     IF COM(134.15) THEN
  554.         IF CYLINDER(17263,5112,0,8) THEN
  555. LOOP6A:
  556.             PLAY"HASH.VOC"
  557.             IF VARTEST(V,1,1) THEN
  558.                 PLAY"SJCSFO.V18"
  559.             ENDIF
  560.             IF VARTEST(T,1,1) THEN
  561.                 PRINT"Cessna 18390 Center."
  562.                 WAIT(4)
  563.                 PRINT"You're cleared direct to San Francisco International."
  564.                 WAIT(4)
  565.                 IF RADIAL(17340,5060,0,0) THEN
  566.                 ENDIF
  567.                 W:=RESULT
  568.                 GOSUB CORRECTHDGCHK
  569.                 PRINTVAR(W,"New heading should be close to ")
  570.                 WAIT(4)
  571.                 PRINT"Maintain current cleared altitude of 3000."
  572.                 WAIT(4)
  573.                 SETVAR(R,1)
  574.                 PRINT"Reduce speed and contact Approach on 134.50."
  575.                 WAIT(4)
  576.             ENDIF
  577.             M:=W
  578.             SETVAR(N,3000)
  579.             GOSUB CLEARVARS
  580.             GOTO LOOP7
  581.         ENDIF
  582.         IF RADIAL(17263,5112,0,0) THEN
  583.         ENDIF
  584.         W:=RESULT
  585.         GOSUB CORRECTHDGCHK
  586.         IF VARTEST(H,-6,6) THEN
  587.             IF ALTITUDE(2800,3200) THEN
  588.                 SETVAR(R,1)
  589.                 GOTO LOOP6
  590.             ENDIF
  591.             IF VARTEST(R,1,1) THEN
  592.                 IF VARTEST(A,10,31999) THEN
  593.                     PLAY"HASH.VOC"
  594.                     IF VARTEST(V,1,1) THEN
  595.                         PLAY"SJCSFO.V19"
  596.                     ENDIF
  597.                     IF VARTEST(T,1,1) THEN
  598.                         PRINT"Cessna 18390 Center."
  599.                         WAIT(4)
  600.                         PRINT"Please maintain cleared altitude of 3000."
  601.                         WAIT(4)
  602.                     ENDIF
  603.                     SETVAR(A,0)
  604.                 ENDIF
  605.                 GOTO LOOP6
  606.             ENDIF
  607.             IF CYLINDER(17263,5112,0,0.187) THEN
  608.                 IF VARTEST(A,10,31999) THEN
  609.                     PLAY"HASH.VOC"
  610.                     IF VARTEST(V,1,1) THEN
  611.                         PLAY"SJCSFO.V20"
  612.                     ENDIF
  613.                     IF VARTEST(T,1,1) THEN
  614.                         PRINT"Cessna 18390 Center."
  615.                         WAIT(4)
  616.                         PRINT"Expedite your climb to 3000."
  617.                         WAIT(4)
  618.                     ENDIF
  619.                     SETVAR(A,0)
  620.                 ENDIF
  621.             ENDIF
  622.             GOTO LOOP6
  623.         ENDIF
  624.         IF VARTEST(B,10,31999) THEN
  625.             PLAY"HASH.VOC"
  626.             IF VARTEST(V,1,1) THEN
  627.                 PLAY"SJCSFO.V21"
  628.             ENDIF
  629.             IF VARTEST(T,1,1) THEN
  630.                 PRINT"Cessna 18390 Center."
  631.                 WAIT(4)
  632.                 PRINT"Establish and maintain a direct heading to San Francisco International VOR."
  633.                 WAIT(4)
  634.                 PRINTVAR(W,"You're heading should be close to ")
  635.                 WAIT(4)
  636.                 PRINT"Frequency for San Francisco International VOR is 115.80."
  637.                 WAIT(4)
  638.             ENDIF
  639.             M:=W
  640.             SETVAR(B,0)
  641.         ENDIF
  642.         GOTO LOOP6
  643.     ENDIF
  644.     IF VARTEST(C,10,31999)
  645.         PLAY"HASH.VOC"
  646.         IF VARTEST(V,1,1) THEN
  647.             PLAY"SJCSFO.V22"
  648.         ENDIF
  649.         IF VARTEST(T,1,1) THEN
  650.             PRINT"Cessna 18390 Center."
  651.             WAIT(4)
  652.             PRINT"Please remain on frequency 134.15."
  653.             WAIT(4)
  654.         ENDIF
  655.         SETVAR(C,0)
  656.     ENDIF
  657.     GOTO LOOP6
  658. ;
  659. ;Approach to destination airport San Francisco International
  660. LOOP7:
  661. ;   Set surface winds at destination
  662.     SETVAR(Y,-256)
  663.     SETVAR(Z,5)
  664.     w0vel:=w0vel&Y|Z
  665.     SETVAR(w0turb,0)
  666.     SETVAR(w0depth,45)
  667.     SETVAR(w0dir,-30947)
  668. LOOP7C:
  669.     IF KEY("R") THEN
  670.         GOTO LOOP6A
  671.     ENDIF
  672.     GOSUB FPAPCHK
  673.     GOSUB TRAFFICCHK
  674.     GOSUB RADARCHK
  675.     GOSUB FSS
  676.     GOSUB COUNTER
  677.     IF COM(134.50) THEN
  678.         SETVAR(L,4)
  679. ;Check for when to turn downwind
  680.         IF CYLINDER(17340,5060,0,8) THEN
  681. ;See if approach will require a procedure turn after passing over the runway
  682.             SETVAR(W,10)
  683.             GOSUB CHKHDGDIRECT
  684.             IF VARTEST(H,-45,45) THEN
  685.                 SETVAR(I,1)
  686.             ENDIF
  687. ;See if downwind is necessary, if not, go direct to base leg
  688.             SETVAR(W,190)
  689.             GOSUB CHKHDGDIRECT
  690.             IF VARTEST(H,-45,45) THEN
  691. LOOP7B:
  692.                 SETVAR(F,1)
  693.                 PLAY"HASH.VOC"
  694.                 IF VARTEST(V,1,1) THEN
  695.                     PLAY"SJCSFO.V23"
  696.                 ENDIF
  697.                 IF VARTEST(T,1,1) THEN
  698.                     PRINT"Cessna 18390 Approach."
  699.                     WAIT(4)
  700.                     PRINT"Radar contact.  Descend and maintain 2000."
  701.                     WAIT(4)
  702.                     PRINT"ATIS information is available on 118.85."
  703.                     WAIT(4)
  704.                     PRINT"Expect vectors to Final for runway 19L ILS approach."
  705.                     WAIT(4)
  706.                     PRINT""
  707.                 ENDIF
  708.                 SETVAR(N,2000)
  709.                 GOSUB CLEARVARS
  710.                 GOTO LOOP8
  711.             ENDIF
  712. LOOP7A:
  713.             PLAY"HASH.VOC"
  714.             IF VARTEST(V,1,1) THEN
  715.                 PLAY"SJCSFO.V24"
  716.             ENDIF
  717.             IF VARTEST(T,1,1) THEN
  718.                 PRINT"Cessna 18390 Approach."
  719.                 WAIT(4)
  720.                 PRINT"Turn right for downwind heading 010."
  721.                 WAIT(4)
  722.                 PRINT"Descend and maintain 2000."
  723.                 WAIT(4)
  724.                 PRINT"Expect vectors to final for runway 19L ILS approach."
  725.                 WAIT(4)
  726.                 PRINT"ATIS information is available on 118.85."
  727.                 WAIT(4)
  728.             ENDIF
  729.             SETVAR(M,10)
  730.             SETVAR(N,2000)
  731.             GOSUB CLEARVARS
  732.             GOTO LOOP8
  733.         ENDIF
  734.         GOTO LOOP7C
  735.     ENDIF
  736.     IF VARTEST(C,10,31999)
  737.         PLAY"HASH.VOC"
  738.         IF VARTEST(V,1,1) THEN
  739.             PLAY"SJCSFO.V25"
  740.         ENDIF
  741.         IF VARTEST(T,1,1) THEN
  742.             PRINT"Cessna 18390 Center."
  743.             WAIT(4)
  744.             PRINT"Please contact Approach on frequency 134.50."
  745.             WAIT(4)
  746.         ENDIF
  747.         SETVAR(C,0)
  748.     ENDIF
  749.     GOTO LOOP7C
  750. ;
  751. ;On the downwind leg
  752. LOOP8:
  753.     IF KEY("R") THEN
  754.         IF VARTEST(F,1,1) THEN
  755.             GOTO LOOP7B
  756.         ENDIF
  757.         GOTO LOOP7A
  758.     ENDIF
  759.     GOSUB FPAPCHK
  760.     GOSUB TRAFFICCHK
  761.     GOSUB COUNTER
  762.     IF COM(134.50) THEN
  763.         IF VARTEST(F,1,1) THEN
  764.             GOTO LOOP8C
  765.         ENDIF
  766. ;Check for when to turn base after downwind
  767.         IF CYLINDER(17340,5060,8,9999) THEN
  768.             GOTO LOOP8D
  769.         ENDIF
  770.         GOTO LOOP8
  771. LOOP8C:
  772. ;Check for when to turn base if no downwind
  773.         IF CYLINDER(17340,5060,0,9999) THEN
  774. LOOP8D:
  775. ;See if procedure turn is required. If so, issue command & go direct to final
  776.             IF VARTEST(I,1,1) THEN
  777.                 GOTO LOOP8B
  778.             ENDIF
  779. ;See if base is necessary, if not, go direct to final leg
  780.             SETVAR(W,190)
  781.             GOSUB CHKHDGDIRECT
  782.             IF VARTEST(H,-20,20) THEN
  783. LOOP8B:
  784.                 SETVAR(G,1)
  785.                 PLAY"HASH.VOC"
  786.                 IF VARTEST(V,1,1) THEN
  787.                     IF VARTEST(I,1,1) THEN
  788.                         PLAY"SJCSFO.V26"
  789.                     ENDIF
  790.                     IF VARTEST(I,0,0) THEN
  791.                         PLAY"SJCSFO.V27"
  792.                     ENDIF
  793.                 ENDIF
  794.                 IF VARTEST(T,1,1) THEN
  795.                     IF VARTEST(I,1,1) THEN
  796.                         PRINT"Cessna 18390 Approach."
  797.                         WAIT(4)
  798.                         PRINT"Execute a standard Procedure Turn."
  799.                         WAIT(4)
  800.                         PRINT"Maintain 2000.  Contact San Francisco International Tower on 120.50."
  801.                         WAIT(4)
  802.                         PRINT""
  803.                     ENDIF
  804.                     IF VARTEST(I,0,0) THEN
  805.                         PRINT"Cessna 18390 Approach."
  806.                         WAIT(4)
  807.                         PRINT"Maintain 2000.  Contact San Francisco International Tower on 120.50."
  808.                         WAIT(4)
  809.                         PRINT""
  810.                     ENDIF
  811.                 ENDIF
  812.                 SETVAR(N,2000)
  813.                 GOSUB CLEARVARS
  814.                 GOTO LOOP9
  815.             ENDIF
  816. LOOP8A:
  817.                 PLAY"HASH.VOC"
  818.             IF VARTEST(V,1,1) THEN
  819.                 IF VARTEST(F,0,0) THEN
  820.                     PLAY"SJCSFO.V28"
  821.                 ENDIF
  822.                 IF VARTEST(F,1,1) THEN
  823.                     PLAY"SJCSFO.V29"
  824.                 ENDIF
  825.             ENDIF
  826.             IF VARTEST(T,1,1) THEN
  827.                 IF VARTEST(F,0,0) THEN
  828.                     PRINT"Cessna 18390 Approach."
  829.                     WAIT(4)
  830.                     PRINT"Turn left for base heading 280."
  831.                     WAIT(4)
  832.                     PRINT"Maintain 2000.  Contact San Francisco International Tower on 120.50."
  833.                     WAIT(4)
  834.                 ENDIF
  835.                 IF VARTEST(F,1,1) THEN
  836.                     PRINT"Cessna 18390 Approach."
  837.                     WAIT(4)
  838.                     PRINT"Turn right for base heading 280."
  839.                     WAIT(4)
  840.                     PRINT"Maintain 2000.  Contact San Francisco International Tower on 120.50."
  841.                     WAIT(4)
  842.                 ENDIF
  843.             ENDIF
  844.             SETVAR(M,280)
  845.             SETVAR(N,2000)
  846.             GOSUB CLEARVARS
  847.             GOTO LOOP9
  848.         ENDIF
  849.         GOTO LOOP8
  850.     ENDIF
  851.     IF VARTEST(C,20,31999)
  852.         PLAY"HASH.VOC"
  853.         IF VARTEST(V,1,1) THEN
  854.             PLAY"SJCSFO.V30"
  855.         ENDIF
  856.         IF VARTEST(T,1,1) THEN
  857.             PRINT"Cessna 18390 Approach."
  858.             WAIT(4)
  859.             PRINT"Please set radio to Approach frequency 134.50."
  860.             WAIT(4)
  861.         ENDIF
  862.         SETVAR(C,0)
  863.     ENDIF
  864.     GOTO LOOP8
  865. ;
  866. ;On the base leg
  867. LOOP9:
  868.     IF KEY("R") THEN
  869.         IF VARTEST(G,1,1) THEN
  870.             GOTO LOOP8B
  871.         ENDIF
  872.         GOTO LOOP8A
  873.     ENDIF
  874.     IF VARTEST(P,1,1) THEN
  875.         GOSUB FPAPCHK
  876.     ENDIF
  877.     GOSUB TRAFFICCHK
  878.     GOSUB COUNTER
  879.     IF COM(120.50) THEN
  880.         PLAY"HASH.VOC"
  881.         IF VARTEST(V,1,1) THEN
  882.             PLAY"SJCSFO.V31"
  883.         ENDIF
  884.         IF VARTEST(T,1,1) THEN
  885. LOOP9A:
  886.     IF KEY("7")
  887.     VIEW(10,"SFOIAP.PCX")
  888.     ENDIF
  889.             PRINT"Cessna 18390 San Francisco International Tower."
  890.             WAIT(4)
  891.             PRINT"Cleared for landing on runway 19L, winds 190 at 5."
  892.             WAIT(4)
  893.         ENDIF
  894.         IF VARTEST(G,1,1) THEN
  895.             IF VARTEST(V,1,1) THEN
  896.                 PLAY"SJCSFO.V32"
  897.             ENDIF
  898.             IF VARTEST(T,1,1) THEN
  899.                 PRINT"Line up for final and intercept localizer 108.90."
  900.             ENDIF
  901.         ENDIF
  902.         IF VARTEST(G,0,0) THEN
  903.             IF VARTEST(V,1,1) THEN
  904.                 PLAY"SJCSFO.V33"
  905.             ENDIF
  906.             IF VARTEST(T,1,1) THEN
  907.             PRINT"Turn left for final upon localizer 108.90 intercept."
  908.             ENDIF
  909.             WAIT(4)
  910.         ENDIF
  911.         IF VARTEST(P,1,1) THEN
  912.             WAIT(10)
  913.             PLAY"HASH.VOC"
  914.             IF VARTEST(V,1,1) THEN
  915.                 PLAY"SJCSFO.V34"
  916.             ENDIF
  917.             IF VARTEST(T,1,1) THEN
  918.                 PRINT"**ATTENTION** The Flight Plan Auto Pilot is about to disengage!"
  919.             ENDIF
  920.             SETVAR(P,0)
  921.             GOSUB FPAPOFF
  922.         ENDIF
  923.         GOSUB CLEARVARS
  924.         GOTO LOOP10
  925.     ENDIF
  926.     IF VARTEST(C,10,31999)
  927.         PLAY"HASH.VOC"
  928.         IF VARTEST(V,1,1) THEN
  929.             PLAY"SJCSFO.V35"
  930.         ENDIF
  931.         IF VARTEST(T,1,1) THEN
  932.             PRINT"Cessna 18390 Approach."
  933.             WAIT(4)
  934.             PRINT"Contact San Francisco International Tower on 120.50."
  935.             WAIT(4)
  936.         ENDIF
  937.         SETVAR(C,0)
  938.     ENDIF
  939.     GOTO LOOP9
  940. ;
  941. ;On final, waiting for touchdown
  942. LOOP10:
  943.     IF KEY("7")
  944.     VIEW(10,"SFOIAP.PCX")
  945.     ENDIF
  946.     IF KEY("R") THEN
  947.         GOTO LOOP9A
  948.     ENDIF
  949.     GOSUB COUNTER
  950.     IF VARMASK(ground,1) THEN
  951.         GOTO LOOP11
  952.     ENDIF
  953.     IF COM(120.50) THEN
  954.         IF CYLINDER(17340,5060,0,5) THEN
  955. LOOP10A:
  956.             IF GEARUP() THEN
  957.                 PLAY"HASH.VOC"
  958.                 IF VARTEST(V,1,1) THEN
  959.                     PLAY"SJCSFO.V36"
  960.                 ENDIF
  961.                 IF VARTEST(T,1,1) THEN
  962.                     PRINT"Cessna 18390 San Francisco International Tower."
  963.                     WAIT(4)
  964.                     PRINT"Please check landing gear status."
  965.                     WAIT(4)
  966.                 ENDIF
  967.             ENDIF
  968.             IF JETENGINE() THEN
  969.                 IF GROUNDSPEED(200,999) THEN
  970.                     PLAY"HASH.VOC"
  971.                     IF VARTEST(V,1,1) THEN
  972.                         PLAY"SJCSFO.V37"
  973.                     ENDIF
  974.                     IF VARTEST(T,1,1) THEN
  975.                         PRINT"Cessna 18390 San Francisco International Tower."
  976.                         WAIT(4)
  977.                         PRINT"Reduce speed for final approach."
  978.                         WAIT(4)
  979.                     ENDIF
  980.                 ENDIF
  981.             ENDIF
  982.             IF PROPENGINE() THEN
  983.                 IF GROUNDSPEED(150,999) THEN
  984.                     PLAY"HASH.VOC"
  985.                     IF VARTEST(V,1,1) THEN
  986.                         PLAY"SJCSFO.V37"
  987.                     ENDIF
  988.                     IF VARTEST(T,1,1) THEN
  989.                         PRINT"Cessna 18390 San Francisco International Tower.
  990.                         WAIT(4)
  991.                         PRINT"Reduce speed for final approach."
  992.                         WAIT(4)
  993.                     ENDIF
  994.                 ENDIF
  995.             ENDIF
  996.         ENDIF
  997.         WAIT(10)
  998.         GOTO LOOP10
  999.     ENDIF
  1000.     IF VARTEST(C,10,31999)
  1001.         PLAY"HASH.VOC"
  1002.         IF VARTEST(V,1,1) THEN
  1003.             PLAY"SJCSFO.V38"
  1004.         ENDIF
  1005.         IF VARTEST(T,1,1) THEN
  1006.             PRINT"Cessna 18390 San Francisco International Tower."
  1007.             WAIT(4)
  1008.             PRINT"Please keep radio on Tower frequency 120.50."
  1009.             WAIT(4)
  1010.         ENDIF
  1011.         SETVAR(C,0)
  1012.     ENDIF
  1013.     GOTO LOOP10
  1014. ;
  1015. ;Touchdown!
  1016. LOOP11:
  1017.     GOSUB COUNTER
  1018.     IF COM(120.50) THEN
  1019.         IF VARTEST(A,10,31999) THEN
  1020. LOOP11A:
  1021.             PLAY"HASH.VOC"
  1022.             IF VARTEST(V,1,1) THEN
  1023.                 PLAY"SJCSFO.V39"
  1024.             ENDIF
  1025.             IF VARTEST(T,1,1) THEN
  1026.                 PRINT"Cessna 18390 San Francisco International Tower."
  1027.                 WAIT(4)
  1028.                 PRINT"Turn off active runway on first available taxiway and hold."
  1029.                 WAIT(4)
  1030.                 PRINT"Contact San Francisco International Ground on 121.80."
  1031.                 WAIT(4)
  1032.             ENDIF
  1033.             GOSUB CLEARVARS
  1034.             GOTO LOOP12
  1035.         ENDIF
  1036.         GOTO LOOP11
  1037.     ENDIF
  1038.     IF VARTEST(C,10,31999)
  1039.         PLAY"HASH.VOC"
  1040.         IF VARTEST(V,1,1) THEN
  1041.             PLAY"SJCSFO.V40"
  1042.         ENDIF
  1043.         IF VARTEST(T,1,1) THEN
  1044.             PRINT"Cessna 18390 San Francisco International Tower."
  1045.             WAIT(4)
  1046.             PRINT"Please keep radio on Tower frequency 120.50."
  1047.             WAIT(4)
  1048.         ENDIF
  1049.         SETVAR(C,0)
  1050.     ENDIF
  1051.     GOTO LOOP11
  1052. ;
  1053. ;Turned off runway and holding
  1054. LOOP12:
  1055.     IF KEY("R") THEN
  1056.         GOTO LOOP11A
  1057.     ENDIF
  1058.     GOSUB COUNTER
  1059.     IF COM(121.80) THEN
  1060.         IF GROUNDSPEED(0,0) THEN
  1061.             PLAY"HASH.VOC"
  1062.             IF VARTEST(V,1,1) THEN
  1063.                 PLAY"SJCSFO.V41"
  1064.             ENDIF
  1065.             IF VARTEST(T,1,1) THEN
  1066.                 PRINT"Cessna 18390 San Francisco International Ground."
  1067.                 WAIT(4)
  1068.                 PRINT"Welcome to San Francisco International."
  1069.                 WAIT(4)
  1070.                 PRINT"Cleared for taxi to terminal area.  So long."
  1071.                 WAIT(4)
  1072.                 PRINT"*** This concludes the adventure file ***"
  1073.                 WAIT(5)
  1074.             ENDIF
  1075.             EOF
  1076.         ENDIF
  1077.         GOTO LOOP12
  1078.     ENDIF
  1079.     IF VARTEST(C,20,31999)
  1080.         PLAY"HASH.VOC"
  1081.         IF VARTEST(V,1,1) THEN
  1082.             PLAY"SJCSFO.V42"
  1083.         ENDIF
  1084.         IF VARTEST(T,1,1) THEN
  1085.             PRINT"Cessna 18390 San Francisco International Tower."
  1086.             WAIT(4)
  1087.             PRINT"Please contact San Francisco International Ground on 121.80."
  1088.             WAIT(4)
  1089.         ENDIF
  1090.         SETVAR(C,0)
  1091.     ENDIF
  1092.     GOTO LOOP12
  1093. ;
  1094. ;***************
  1095. ;* SUBROUTINES *
  1096. ;***************
  1097. ;
  1098. COUNTER:
  1099.     ADDVAR(A,1)
  1100.     ADDVAR(B,1)
  1101.     ADDVAR(C,1)
  1102.     ADDVAR(D,1)
  1103.     ADDVAR(E,1)
  1104.     WAIT(1)
  1105.     RETURN
  1106. ;
  1107. CLEARVARS:
  1108.     SETVAR(A,0)
  1109.     SETVAR(B,0)
  1110.     SETVAR(C,0)
  1111.     SETVAR(D,0)
  1112.     SETVAR(E,0)
  1113.     RETURN
  1114. ;
  1115. FPAPCHK:
  1116. ;Parameters: M = Desired Heading
  1117. ;            N = Desired Altitude
  1118.     IF KEY("7")
  1119.     VIEW(10,"SFOIAP.PCX")
  1120.     ENDIF
  1121.     IF KEY("W") THEN
  1122.         SETVAR(P,1)
  1123.         SETVAR(heading_lock,1)
  1124.         SETVAR(altit_lock,1)
  1125.         PLAY"HASH.VOC"
  1126.         IF VARTEST(V, 1, 1) THEN
  1127.             PLAY"PTB.VYA"
  1128.         ENDIF
  1129.         IF VARTEST(T, 1, 1) THEN
  1130.             PRINT"*** Flight Plan Auto Pilot is now engaged ***"
  1131.             WAIT(4)
  1132.             PRINT""
  1133.         ENDIF
  1134.     ENDIF
  1135.     IF KEY("E") THEN
  1136. FPAPOFF:
  1137.         SETVAR(P,0)
  1138.         SETVAR(autop_master,0)
  1139.         SETVAR(heading_lock,0)
  1140.         SETVAR(altit_lock,0)
  1141.         PLAY"HASH.VOC"
  1142.         IF VARTEST(V, 1, 1) THEN
  1143.             PLAY"PTB.VYB"
  1144.         ENDIF
  1145.         IF VARTEST(T, 1, 1) THEN
  1146.             PRINT"*** Flight Plan Auto Pilot is now disengaged ***"
  1147.             WAIT(4)
  1148.             PRINT""
  1149.         ENDIF
  1150.     ENDIF
  1151.     IF VARTEST(P,1,1) THEN
  1152. ;       Add MagVar and NorRot to Heading
  1153.         SETVAR(X,180)
  1154.         SETVAR(Z,32767)
  1155.         SETVAR(W,0)
  1156.         Y:=norrot+magvar
  1157.         IF VARTEST(Y,-32765,-1) THEN
  1158.             SETVAR(W,360)
  1159.         ENDIF
  1160.         Y:=norrot+magvar*X/Z-W+M
  1161.         IF VARTEST(Y,361,999) THEN
  1162.             Y:=Y-X-X
  1163.         ENDIF
  1164.         IF VARTEST(Y,-999,-1) THEN
  1165.             Y:=Y+X+X
  1166.         ENDIF
  1167. ;       Convert Heading to a WORD
  1168.         SETVAR(Z,65534)
  1169.         SETVAR(X,360)
  1170.         IF VARTEST(Y,0,180) THEN
  1171.             head_lock_var:=Y*Z/X
  1172.         ENDIF
  1173.         IF VARTEST(Y,181,360) THEN
  1174.             head_lock_var:=Y*Z/X-Z
  1175.         ENDIF
  1176. ;       Convert Altitude in feet to meters
  1177.         SETVAR(Y,305)
  1178.         SETVAR(Z,1000)
  1179.         X:=N*Y/Z
  1180.         altit_lock_var:=X
  1181.         SETVAR(autop_master,1)
  1182.     ENDIF
  1183.     RETURN
  1184. ;
  1185. FSS:
  1186.     IF COM(122.20) THEN
  1187.         IF KEY("J") THEN
  1188.             PLAY"HASH.VOC"
  1189.             IF VARTEST(V,1,1) THEN
  1190.                 PLAY"PTB.VYC"
  1191.             ENDIF
  1192.             IF VARTEST(T, 1, 1) THEN
  1193.                 PRINT"Cessna 18390 Flight Service."
  1194.                 WAIT(4)
  1195.                 PRINT"You're routed SJC->SFO at 3000."
  1196.                 WAIT(4)
  1197.                 PRINT"Latest weather report showed winds from 0 at 0 above 3500."
  1198.                 WAIT(4)
  1199.                 GOSUB WXCOND
  1200.                 WAIT(4)
  1201.                 PRINT""
  1202.             ENDIF
  1203.             SETVAR(C,0)
  1204.             GOTO FSSDONE
  1205.         ENDIF
  1206.         IF VARTEST(L,0,1) THEN
  1207.             GOTO FSSDONE
  1208.         ENDIF
  1209.         IF KEY("X") THEN
  1210.             PLAY"HASH.VOC"
  1211.             IF VARTEST(V, 1, 1) THEN
  1212.                 PLAY"SJCSFO.VYE"
  1213.             ENDIF
  1214.             IF VARTEST(T, 1, 1) THEN
  1215.                 PRINT"Cessna 18390 Flight Service."
  1216.                 WAIT(4)
  1217.                 PRINT"You're cleared for deviation from plan."
  1218.                 WAIT(4)
  1219.                 PRINT"Radar service suspended.  Squawk 1200."
  1220.                 WAIT(4)
  1221.                 PRINT"Fly VFR while deviated."
  1222.                 WAIT(4)
  1223.                 PRINT"Contact us again when ready to resume flight as filed."
  1224.                 WAIT(4)
  1225.                 PRINT""
  1226.             ENDIF
  1227.             SETVAR(S,1)
  1228.             SETVAR(E,0)
  1229.             GOTO FSSVFR
  1230.         ENDIF
  1231.     ENDIF
  1232.     GOTO FSSDONE
  1233. FSSVFR:
  1234.     IF COM(122.20) THEN
  1235.         IF KEY("X") THEN
  1236.             PLAY"HASH.VOC"
  1237.             IF VARTEST(V, 1, 1) THEN
  1238.                 PLAY"PTB.VYD"
  1239.                 GOSUB FSSWHOV
  1240.             ENDIF
  1241.             IF VARTEST(T, 1, 1) THEN
  1242.                 PRINT"Cessna 18390 Flight Service."
  1243.                 WAIT(4)
  1244.                 PRINT"Radar service resuming.  Squawk 6404."
  1245.                 WAIT(4)
  1246.                 GOSUB FSSWHOT
  1247.                 WAIT(4)
  1248.                 PRINT""
  1249.             ENDIF
  1250.             SETVAR(S,0)
  1251.             SETVAR(C,0)
  1252.             GOTO FSSDONE
  1253.         ENDIF
  1254.         GOSUB COUNTER
  1255.         IF VARTEST(E,180,9999)
  1256.             PLAY"HASH.VOC"
  1257.             IF VARTEST(V,1,1) THEN
  1258.                 PLAY"PTB.VYF"
  1259.             ENDIF
  1260.             IF VARTEST(T, 1, 1) THEN
  1261.                 PRINT"Cessna 18390 Flight Service."
  1262.                 WAIT(4)
  1263.                 PRINT"Contact us again when ready to resume flight as filed."
  1264.                 WAIT(4)
  1265.                 PRINT""
  1266.             ENDIF
  1267.             SETVAR(E,0)
  1268.         ENDIF
  1269.     ENDIF
  1270.     GOSUB FPAPCHK
  1271.     GOTO FSSVFR
  1272. FSSDONE:
  1273.     RETURN
  1274. ;
  1275. FSSWHOV:
  1276.     IF VARTEST(V,1,1) THEN
  1277.         IF VARTEST(L,0,0) THEN
  1278.             PLAY"SJCSFO.VYG"
  1279.         ENDIF
  1280.         IF VARTEST(L,1,1) THEN
  1281.             PLAY"SJCSFO.VYH"
  1282.         ENDIF
  1283.         IF VARTEST(L,2,2) THEN
  1284.             PLAY"SJCSFO.VYI"
  1285.         ENDIF
  1286.         IF VARTEST(L,3,3) THEN
  1287.             PLAY"SJCSFO.VYJ"
  1288.         ENDIF
  1289.         IF VARTEST(L,4,4) THEN
  1290.             PLAY"SJCSFO.VYK"
  1291.         ENDIF
  1292.     ENDIF
  1293.     RETURN
  1294. ;
  1295. FSSWHOT:
  1296.     IF VARTEST(T,1,1) THEN
  1297.         IF VARTEST(L,0,0) THEN
  1298.             PRINT"Contact Ground on 121.80."
  1299.         ENDIF
  1300.         IF VARTEST(L,1,1) THEN
  1301.             PRINT"Contact Tower on 124.0."
  1302.         ENDIF
  1303.         IF VARTEST(L,2,2) THEN
  1304.             PRINT"Contact Departure on 121.3, expect vectors back to plan."
  1305.         ENDIF
  1306.         IF VARTEST(L,3,3) THEN
  1307.             PRINT"Contact Center on 134.15, expect vectors back to plan."
  1308.         ENDIF
  1309.         IF VARTEST(L,4,4) THEN
  1310.             PRINT"Contact Approach on 134.50, navigate back into the pattern."
  1311.         ENDIF
  1312.     ENDIF
  1313.     RETURN
  1314. ;
  1315. WXUPDATE:
  1316.     ADDVAR(K,1)
  1317.     IF VARTEST(K,0,40) THEN
  1318.         GOTO WXEND
  1319.     ENDIF
  1320.     SETVAR(K,0)
  1321.     SETVAR(X,101)
  1322.     Y:=random/X
  1323.     X:=remainder
  1324.     IF VARTEST(X,0,999) THEN
  1325.         GOTO WXEND
  1326.     ENDIF
  1327.     SETVAR(X,101)
  1328.     Y:=random/X
  1329.     X:=remainder
  1330.     IF VARTEST(X,0,0) THEN
  1331.         SETVAR(Y,1)
  1332.         J:=J-Y
  1333.         IF VARTEST(J,-999,-1) THEN
  1334.             SETVAR(J,0)
  1335.         ENDIF
  1336.         IF VARTEST(J,9,999) THEN
  1337.             SETVAR(J,8)
  1338.         ENDIF
  1339.         X:=J
  1340.         IF VARTEST(X,-999,-1) THEN
  1341.             SETVAR(X,0)
  1342.         ENDIF
  1343.         IF VARTEST(X,9,999) THEN
  1344.             SETVAR(X,8)
  1345.         ENDIF
  1346.         cloud1cover:=X
  1347.     ENDIF
  1348.     SETVAR(X,156)
  1349.     cloud1top:=cloud1top-X-X
  1350.     Y:=cloud1bot+X
  1351.     IF VARTEST(Y,-9999,976) THEN
  1352.         SETVAR(Y,976)
  1353.     ENDIF
  1354.     cloud1bot:=Y
  1355. WXEND:
  1356.     RETURN
  1357. ;
  1358. WXCOND:
  1359.     SETVAR(X,305)
  1360.     SETVAR(Z,100)
  1361.     Y:=cloud1bot*X/Z
  1362.     IF VARTEST(cloud1cover,0,0) THEN
  1363.         PRINT"Visibility 10 with clear skies."
  1364.     ENDIF
  1365.     IF VARTEST(cloud1cover,1,4) THEN
  1366.         PRINTVAR(Y,"Currently scattered clouds with a measured ceiling of ")
  1367.     ENDIF
  1368.     IF VARTEST(cloud1cover,5,7) THEN
  1369.         PRINTVAR(Y,"Currently broken clouds with a measured ceiling of ")
  1370.     ENDIF
  1371.     IF VARTEST(cloud1cover,8,8) THEN
  1372.         PRINTVAR(Y,"Currently overcast with a measured ceiling of ")
  1373.     ENDIF
  1374.     RETURN
  1375. ;
  1376. CORRECTHDGCHK:
  1377. ;
  1378. ;Parameters: W = Opposite Desired Heading
  1379. ;Variables : U = Current Heading
  1380. ;            X,Y,Z = temporary
  1381. ;Outputs   : W = Required Heading
  1382. ;            H = Absolute value of Heading error in degrees
  1383. ;
  1384. ;   Compute good heading from radial
  1385.     SETVAR(X,180)
  1386.     W:=W+X
  1387. CHKHDGDIRECT:
  1388.     SETVAR(X,360)
  1389.     IF VARTEST(W,-800,0) THEN
  1390.         W:=W+X
  1391.     ENDIF
  1392.     IF VARTEST(W,361,800) THEN
  1393.         W:=W-X
  1394.     ENDIF
  1395. ;   Compute current heading
  1396.     IF COURSE(0,0) THEN
  1397.     ENDIF
  1398.     U:=RESULT
  1399. ;   Compute heading error regardless of Curr/Req Hdg values
  1400.     H:=U-W
  1401.     SETVAR(Y,-1)
  1402.     IF VARTEST(H,-999,-1) THEN
  1403.         H:=H*Y
  1404.     ENDIF
  1405. ;   Compute heading error depending if Curr or Req heading is greater
  1406.     IF VARTEST(H,181,999) THEN
  1407.         SETVAR(Y,1)
  1408.         Z:=W+Y
  1409.         SETVAR(Y,360)
  1410.         IF VARTEST(U,Z,999) THEN
  1411.             H:=U-W-Y
  1412.             GOTO CHKHDGCONT
  1413.         ENDIF
  1414.         H:=U-W+Y
  1415.     ENDIF
  1416. CHKHDGCONT:
  1417.     RETURN
  1418. ;
  1419. RADARCHK:
  1420.     IF XPNDR(6404) THEN
  1421.         GOTO RADARCHKA
  1422.     ENDIF
  1423.     PLAY"HASH.VOC"
  1424.     IF VARTEST(V, 1, 1) THEN
  1425.         PLAY"PTB.VYL"
  1426.     ENDIF
  1427.     IF VARTEST(T, 1, 1) THEN
  1428.         PRINT"Cessna 18390 Center."
  1429.         WAIT(2)
  1430.         PRINT"We have lost you off the radar."
  1431.         WAIT(2)
  1432.         PRINT"Please squawk 6404 unless told otherwise."
  1433.         WAIT(4)
  1434.         PRINT""
  1435.     ENDIF
  1436.     WAIT(10)
  1437.     GOTO RADARCHKB
  1438. RADARCHKA:
  1439.     IF VARTEST(RANDOM,0,300) THEN
  1440.         PLAY"HASH.VOC"
  1441.         IF VARTEST(V, 1, 1) THEN
  1442.             PLAY"PTB.VYM"
  1443.         ENDIF
  1444.         IF VARTEST(T, 1, 1) THEN
  1445.             PRINT"Cessna 18390 Center."
  1446.             WAIT(2)
  1447.             PRINT"Radar check to follow..."
  1448.             WAIT(1)
  1449.         ENDIF
  1450.         IF ALTITUDE(0,0) THEN
  1451.         ENDIF
  1452.         PRINTVAR(RESULT,"...Altitude: ")
  1453.         WAIT(2)
  1454.         IF HEADING(0,0) THEN
  1455.         ENDIF
  1456.         PRINTVAR(RESULT,"...Heading: ")
  1457.         WAIT(2)
  1458.         IF COURSE(0,0) THEN
  1459.         ENDIF
  1460.         PRINTVAR(RESULT,"...Course: ")
  1461.         WAIT(2)
  1462.         IF AIRSPEED(0,0) THEN
  1463.         ENDIF
  1464.         PRINTVAR(RESULT,"...Airspeed: ")
  1465.         WAIT(2)
  1466.         PRINT ""
  1467.         IF VARTEST(V, 1, 1) THEN
  1468.             PLAY"PTB.VYN"
  1469.         ENDIF
  1470.         IF VARTEST(T, 1, 1) THEN
  1471.             PRINT"Radar check complete.  Thank you and so long."
  1472.             WAIT(2)
  1473.             PRINT ""
  1474.         ENDIF
  1475.     ENDIF
  1476. RADARCHKB:
  1477.     RETURN
  1478. ;
  1479. ;***************
  1480. ;* ATC CHATTER *
  1481. ;***************
  1482. ;
  1483. TRAFFICCHK:
  1484.     IF VARTEST(RANDOM,0,2500) THEN
  1485.         IF VARTEST(O, 0, 0) THEN
  1486.             IF VARTEST(V, 1, 1) THEN
  1487.                 PLAY"PTB.VZA"
  1488.             ENDIF
  1489.             IF VARTEST(T, 1, 1) THEN
  1490.                 PRINT"American 267 Heavy Center."
  1491.                 WAIT(4)
  1492.                 PRINT"Climb to FL340, traffic eastbound at FL320."
  1493.                 WAIT(4)
  1494.             ENDIF
  1495.         ENDIF
  1496.         IF VARTEST(O, 1, 1) THEN
  1497.             IF VARTEST(V, 1, 1) THEN
  1498.                 PLAY"PTB.VZB"
  1499.             ENDIF
  1500.             IF VARTEST(T, 1, 1) THEN
  1501.                 PRINT"Delta 1244 Center."
  1502.                 WAIT(4)
  1503.                 PRINT"At station passage, resume normal navigation. So Long."
  1504.                 WAIT(4)
  1505.             ENDIF
  1506.         ENDIF
  1507.         IF VARTEST(O, 2, 2) THEN
  1508.             IF VARTEST(V, 1, 1) THEN
  1509.                 PLAY"PTB.VZC"
  1510.             ENDIF
  1511.             IF VARTEST(T, 1, 1) THEN
  1512.                 PRINT"Cessna 2034 Center."
  1513.                 WAIT(4)
  1514.                 PRINT"Descend and Maintain 3000.  Contact Approach Control.  Good day."
  1515.                 WAIT(4)
  1516.             ENDIF
  1517.         ENDIF
  1518.         IF VARTEST(O, 3, 3) THEN
  1519.             IF VARTEST(V, 1, 1) THEN
  1520.                 PLAY"PTB.VZD"
  1521.             ENDIF
  1522.             IF VARTEST(T, 1, 1) THEN
  1523.                 PRINT"Yankee Cargo 662 Center."
  1524.                 WAIT(4)
  1525.                 PRINT"You're cleared for 12000."
  1526.                 WAIT(4)
  1527.             ENDIF
  1528.         ENDIF
  1529.         IF VARTEST(O, 4, 4) THEN
  1530.             IF VARTEST(V, 1, 1) THEN
  1531.                 PLAY"PTB.VZE"
  1532.             ENDIF
  1533.             IF VARTEST(T, 1, 1) THEN
  1534.                 PRINT"United 3168 Heavy Center."
  1535.                 WAIT(4)
  1536.                 PRINT"Reduce speed to 210.  Descend and maintain FL180."
  1537.                 WAIT(4)
  1538.             ENDIF
  1539.         ENDIF
  1540.         IF VARTEST(O, 5, 5) THEN
  1541.             IF VARTEST(V, 1, 1) THEN
  1542.                 PLAY"PTB.VZF"
  1543.             ENDIF
  1544.             IF VARTEST(T, 1, 1) THEN
  1545.                 PRINT"American 267 Heavy Center."
  1546.                 WAIT(4)
  1547.                 PRINT"Please repeat that last request."
  1548.                 WAIT(4)
  1549.             ENDIF
  1550.         ENDIF
  1551.         IF VARTEST(O, 6, 6) THEN
  1552.             IF VARTEST(V, 1, 1) THEN
  1553.                 PLAY"PTB.VZG"
  1554.             ENDIF
  1555.             IF VARTEST(T, 1, 1) THEN
  1556.                 PRINT"US Air Express Center."
  1557.                 WAIT(4)
  1558.                 PRINT"Be advised of significant turbulence in the area."
  1559.                 WAIT(4)
  1560.             ENDIF
  1561.         ENDIF
  1562.         IF VARTEST(O, 7, 7) THEN
  1563.             IF VARTEST(V, 1, 1) THEN
  1564.                 PLAY"PTB.VZH"
  1565.             ENDIF
  1566.             IF VARTEST(T, 1, 1) THEN
  1567.                 PRINT"American Eagle 2190 Center."
  1568.                 WAIT(4)
  1569.                 PRINT"Turn right for downwind.  Expect ILS vectors."
  1570.                 WAIT(4)
  1571.             ENDIF
  1572.         ENDIF
  1573.         IF VARTEST(O, 8, 8) THEN
  1574.             IF VARTEST(V, 1, 1) THEN
  1575.                 PLAY"PTB.VZI"
  1576.             ENDIF
  1577.             IF VARTEST(T, 1, 1) THEN
  1578.                 PRINT"Care Flight One Center."
  1579.                 WAIT(4)
  1580.                 PRINT"You're cleared on a direct visual."
  1581.                 WAIT(4)
  1582.             ENDIF
  1583.         ENDIF
  1584.         IF VARTEST(O, 9, 9) THEN
  1585.             IF VARTEST(V, 1, 1) THEN
  1586.                 PLAY"PTB.VZJ"
  1587.             ENDIF
  1588.             IF VARTEST(T, 1, 1) THEN
  1589.                 PRINT"American 2143 Center."
  1590.                 WAIT(4)
  1591.                 PRINT"Descend and maintain 7000.  Continue to hold at the marker."
  1592.                 WAIT(4)
  1593.             ENDIF
  1594.         ENDIF
  1595.         IF VARTEST(O, 10, 10) THEN
  1596.             IF VARTEST(V, 1, 1) THEN
  1597.                 PLAY"PTB.VZK"
  1598.             ENDIF
  1599.             IF VARTEST(T, 1, 1) THEN
  1600.                 PRINT"Piper 6229 Center."
  1601.                 WAIT(4)
  1602.                 PRINT"Turn heading 080.  Maintain current altitude."
  1603.                 WAIT(4)
  1604.             ENDIF
  1605.         ENDIF
  1606.         IF VARTEST(O, 11, 11) THEN
  1607.             IF VARTEST(V, 1, 1) THEN
  1608.                 PLAY"PTB.VZL"
  1609.             ENDIF
  1610.             IF VARTEST(T, 1, 1) THEN
  1611.                 PRINT"Grand Tours 215 Center."
  1612.                 WAIT(4)
  1613.                 PRINT"Remain under 1000 to continue visual clearance."
  1614.                 WAIT(4)
  1615.             ENDIF
  1616.         ENDIF
  1617.         IF VARTEST(O, 12, 12) THEN
  1618.             IF VARTEST(V, 1, 1) THEN
  1619.                 PLAY"PTB.VZM"
  1620.             ENDIF
  1621.             IF VARTEST(T, 1, 1) THEN
  1622.                 PRINT"Delta 447 Center."
  1623.                 WAIT(4)
  1624.                 PRINT"Squawk 2831.  Expect radar check."
  1625.                 WAIT(4)
  1626.             ENDIF
  1627.         ENDIF
  1628.         IF VARTEST(O, 13, 13) THEN
  1629.             IF VARTEST(V, 1, 1) THEN
  1630.                 PLAY"PTB.VZN"
  1631.             ENDIF
  1632.             IF VARTEST(T, 1, 1) THEN
  1633.                 PRINT"Citation 220 Center."
  1634.                 WAIT(4)
  1635.                 PRINT"Climb to 15000.  Watch for traffic westbound."
  1636.                 WAIT(4)
  1637.             ENDIF
  1638.         ENDIF
  1639.         IF VARTEST(O, 14, 14) THEN
  1640.             IF VARTEST(V, 1, 1) THEN
  1641.                 PLAY"PTB.VZO"
  1642.             ENDIF
  1643.             IF VARTEST(T, 1, 1) THEN
  1644.                 PRINT"Delta 310 Heavy Center."
  1645.                 WAIT(4)
  1646.                 PRINT"Descend to 2500 and contact approach.  So long."
  1647.                 WAIT(4)
  1648.             ENDIF
  1649.         ENDIF
  1650.         IF VARTEST(O, 15, 15) THEN
  1651.             IF VARTEST(V, 1, 1) THEN
  1652.                 PLAY"PTB.VZP"
  1653.             ENDIF
  1654.             IF VARTEST(T, 1, 1) THEN
  1655.                 PRINT"Citation 220 Center."
  1656.                 WAIT(4)
  1657.                 PRINT"Turn heading 322. Maintain 16000."
  1658.                 WAIT(4)
  1659.             ENDIF
  1660.         ENDIF
  1661.         IF VARTEST(O, 16, 16) THEN
  1662.             IF VARTEST(V, 1, 1) THEN
  1663.                 PLAY"PTB.VZQ"
  1664.             ENDIF
  1665.             IF VARTEST(T, 1, 1) THEN
  1666.                 PRINT"US Air 3351 Center."
  1667.                 WAIT(4)
  1668.                 PRINT"Expect vectors around storm cell."
  1669.                 WAIT(4)
  1670.             ENDIF
  1671.         ENDIF
  1672.         IF VARTEST(O, 17, 17) THEN
  1673.             IF VARTEST(V, 1, 1) THEN
  1674.                 PLAY"PTB.VZR"
  1675.             ENDIF
  1676.             IF VARTEST(T, 1, 1) THEN
  1677.                 PRINT"Continental 1144 Center."
  1678.                 WAIT(4)
  1679.                 PRINT"Proceed direct to outer marker and Hold."
  1680.                 WAIT(4)
  1681.             ENDIF
  1682.         ENDIF
  1683.         IF VARTEST(O, 18, 18) THEN
  1684.             IF VARTEST(V, 1, 1) THEN
  1685.                 PLAY"PTB.VZS"
  1686.             ENDIF
  1687.             IF VARTEST(T, 1, 1) THEN
  1688.                 PRINT"United 337 Heavy Center."
  1689.                 WAIT(4)
  1690.                 PRINT"Prepare for handoff to approach when you reach 3000."
  1691.                 WAIT(4)
  1692.             ENDIF
  1693.         ENDIF
  1694.         IF VARTEST(O, 19, 19) THEN
  1695.             IF VARTEST(V, 1, 1) THEN
  1696.                 PLAY"PTB.VZT"
  1697.             ENDIF
  1698.             IF VARTEST(T, 1, 1) THEN
  1699.                 PRINT"Federal Express 662 Center."
  1700.                 WAIT(4)
  1701.                 PRINT"Expedite descent to 8000.  Report fuel status."
  1702.                 WAIT(4)
  1703.             ENDIF
  1704.         ENDIF
  1705.         IF VARTEST(O, 20, 20) THEN
  1706.             IF VARTEST(V, 1, 1) THEN
  1707.                 PLAY"PTB.VZU"
  1708.             ENDIF
  1709.             IF VARTEST(T, 1, 1) THEN
  1710.                 PRINT"United 449 Center."
  1711.                 WAIT(4)
  1712.                 PRINT"Reduce speed to 190.  Contact Approach.  Bye."
  1713.                 WAIT(4)
  1714.             ENDIF
  1715.         ENDIF
  1716.         IF VARTEST(O, 21, 21) THEN
  1717.             IF VARTEST(V, 1, 1) THEN
  1718.                 PLAY"PTB.VZV"
  1719.             ENDIF
  1720.             IF VARTEST(T, 1, 1) THEN
  1721.                 PRINT"Southwest 1221 Center."
  1722.                 WAIT(4)
  1723.                 PRINT"Maintain current heading and altitude."
  1724.                 WAIT(4)
  1725.             ENDIF
  1726.         ENDIF
  1727.         PRINT""
  1728.     ENDIF
  1729.     ADDVAR(O,1)
  1730.     IF VARTEST(O, 22, 999) THEN
  1731.         SETVAR(O,0)
  1732.     ENDIF
  1733.     RETURN
  1734.